package gat;

import java.util.Set;

import gat.common.enums.NoEnum;


/**
 * @author sxq
 * @date 2021/12/14
 */
public interface RedisService {


    /**
     * 获取业务编号
     *
     * @param noEnum
     * @return
     */
    String getNo(NoEnum noEnum);

    String getNewNo(NoEnum noEnum);

    /**
     * 实现命令：TTL key，以秒为单位，返回给定 key的剩余生存时间(TTL, time to live)。
     *
     * @param key
     * @return
     */
    long ttl(String key);

    /**
     * 实现命令：expire 设置过期时间，单位秒
     *
     * @param key
     * @param timeout
     */
    void expire(String key, long timeout);

    /**
     * 实现命令：INCR key，增加key一次
     *
     * @param key
     * @return
     */
    long incr(String key, long delta);

    /**
     * 实现命令：KEYS pattern，查找所有符合给定模式 pattern的 key
     */
    Set<String> keys(String pattern);

    /**
     * 实现命令：DEL key，删除一个key
     *
     * @param key
     */
    void del(String key);

    /**
     * 实现命令：SET key value，设置一个key-value（将字符串值 value关联到 key）
     *
     * @param key
     * @param value
     */
    void set(String key, String value);

    /**
     * 实现命令：SET key value EX seconds，设置key-value和超时时间（秒）
     *
     * @param key
     * @param value
     * @param timeout（以秒为单位）
     */
    void set(String key, String value, long timeout);

    /**
     * 实现命令：GET key，返回 key所关联的字符串值。
     *
     * @param key
     * @return value
     */
    String get(String key);

    Boolean hasKey(String key);

    void batchDeleteKes(String pattern);

}
